MIME-Version: 1.0
Server: CERN/3.0
Date: Tuesday, 07-Jan-97 15:26:45 GMT
Content-Type: text/html
Content-Length: 2299
Last-Modified: Thursday, 24-Aug-95 17:14:56 GMT

<HTML>
<!-- HyperText Markup Language.  autop.html      G. Novak      24 Aug 95    -->
<HEAD>
<TITLE>Automatic Programming</TITLE>
</HEAD>

<BODY>
<H1>Automatic Programming</H1>
<HR>
<!WA0><!WA0><!WA0><!WA0><!WA0><IMG SRC="http://www.cs.utexas.edu/users/novak/cone3.gif" ALIGN=bottom> <!WA1><!WA1><!WA1><!WA1><!WA1><IMG SRC="http://www.cs.utexas.edu/users/novak/sunmass3.gif" ALIGN=bottom>
<P>
Automatic Programming is defined as the synthesis of a program from
a specification.  If automatic programming is to be useful, the
specification must be smaller and easier to write than the program would
be if written in a conventional programming language.
<P>
Our approach to automatic programming is based on reuse of generic
algorithms through views.  A <i>generic algorithm</i> performs some task,
such as sorting a linked list of records, based on abstract descriptions
of the data on which the program operates.  A <i>view</i> describes
how actual application data correspond to the abstract data as used
in the generic algorithm.  Given a view, a generic algorithm can be
<i>specialized</i> by a compilation process to produce a version of
the algorithm that performs the algorithm directly on the application data.
<P>
Graphical user interfaces make it easy for the user to create views
of the application data.  Given a <i>view,</i> any of the library algorithms
defined for that view can be specialized to work with the application data.
Specialized programs can be produced in multiple languages (currently
Lisp and C) from a single copy of the generic algorithms.
<P>
A related system allows a program to be specified graphically by
connecting diagrams that represent data, physical laws, and mathematical
models.
<P>
On-line demonstrations of these programs are avialable below.
<P>

<!WA2><!WA2><!WA2><!WA2><!WA2><a href="http://www.cs.utexas.edu/users/novak/views.html">Views</a><p>

<!WA3><!WA3><!WA3><!WA3><!WA3><a href="http://www.cs.utexas.edu/users/novak/papers.html">Publications</a><p>

<!WA4><!WA4><!WA4><!WA4><!WA4><a href="http://www.cs.utexas.edu/users/novak/cs395t.html">CS 395T: Automatic Programming</a><p>

<H2>Software Demos: Some (*) are Under Construction.</H2>

<UL>
<LI><!WA5><!WA5><!WA5><!WA5><!WA5><a href="http://www.cs.utexas.edu/users/novak/cgi/apserver">Automatic Programming Server:</a> (*)
Create Programs in Lisp or C.
<LI><!WA6><!WA6><!WA6><!WA6><!WA6><a href="http://www.cs.utexas.edu/users/novak/cgi/vipdemo">VIP Demo:</a>
Write Programs and Do Physics by Connecting Diagrams.
<LI><!WA7><!WA7><!WA7><!WA7><!WA7><a href="http://www.cs.utexas.edu/users/novak/cgi/unitsdemo">Unit Conversion Demo:</a>
Convert Units of Measurement.
</UL>

</BODY>
<address><!WA8><!WA8><!WA8><!WA8><!WA8><a href="http://www.cs.utexas.edu/users/novak/index.html">
Gordon S. Novak Jr.</a></address>
</HTML>
